The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
When a user requests the printing of an electronic document a print subsystem on the user's client device processes the electronic document to generate print data. The print data generated by the subsystem, which is a rasterized version of the electronic document, is then sent to a printing device for printing. This rasterized print data includes all of the information required by the printing device to generate a printed version of the electronic document reflected in the print data.
For example, a user creates an electronic document using a word processing application on a PC. The user then selects a print option in the word processing application to request that the electronic document be printed at a particular printer. The print subsystem on the PC processes the electronic document to generate rasterized print data in a format supported by the particular printer, and sends the rasterized print data to the particular printer.
Generating print data conventionally involves the use of a model-specific printer driver that is specific to the target printing device. The model-specific printer driver converts data into a format supported by the target printing device. Therefore, in order for a client device to correctly print to a particular printing device using this conventional printer driver system, the client device must have installed on it a current printer driver that is specific to the particular printing device. A model-specific printer driver for each printing device must be installed on the client device.
Locating and installing model-specific printer drivers can be difficult and time-consuming. Furthermore, if the capabilities of a printing device changes, then it may be necessary to generate and distribute a new model-specific printer driver to a large number of users that have an outdated version of the model-specific printer driver. Also, model-specific printer drivers are not always available for all operating systems.
One approach for addressing the issues related to model-specific printer drivers is to use a generic printer driver that supports a reduced set of printer features, but which is designed to work with a set of printer models that support the reduced set of printer features. This allows a user to install a generic printer driver that will work with several printer models. Some of the disadvantages of generic printer drivers are that they support a reduced set of printer features, are typically vendor specific and only work with a specific type of Page Description Language (PDL), such as PostScript or low-level Printer Command Language (PCL).
Another approach for addressing the issues related to model-specific printer drivers is to use a universal printer driver that supports multiple printer models, but for a particular PDL. Although universal printer drivers typically support only a particular PDL, they usually support a superset of features, so that users can use all of the features of the printing devices. One of the disadvantages of universal printer drivers is that they often do not support new features added to existing printing devices or included with new printing devices. A universal printer driver has to be updated to support features that were not implemented at the time the universal printer driver was installed. Also, some universal printer drivers are vendor specific and so not support other vendors' printers, even though they may use the same PDL.